#pragma once
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>

typedef int HeapDataType;
typedef struct Heap
{
	HeapDataType* data;//存储数据的数组
	int size;//数组大小
	int capacity;//容量
}Heap;

//向下调整算法
void AdjustDown(HeapDataType* a, int parent, int size);

//向上调整
void AdjustUp(HeapDataType* a, int child);

//交换
void Swap(HeapDataType* a1, HeapDataType* a2);

//堆的初始化
void HeapInit(Heap* hp);

//堆的销毁
void HeapDestroy(Heap* hp);

//堆的插入
void HeapPush(Heap* hp, HeapDataType x);

//堆的删除
void HeapPop(Heap* hp);

//取堆顶的数据
HeapDataType GetHeapTop(Heap* hp);

//判空
int HeapEmpty(Heap* hp);

//获取堆的数据个数
int GetHeapSize(Heap* hp);